package com.interceptor;

import com.domain.User;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.util.List;

/**
 * 资源拦截器
 */
public class ResourcesInterceptor extends HandlerInterceptorAdapter {

//拦截器主要拦截requestmapping不会拦截相对路径跳转
    //任意角色都能访问的路径
    private List<String> ignoreUrl;
    public ResourcesInterceptor(List<String> ignoreUrl) {
        this.ignoreUrl = ignoreUrl;
    }
    //请求对象  调研对象  被处理的对象
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
            Exception {

        String uri = request.getRequestURI();
        String message=(String)request.getSession().getAttribute("USER_SESSION");

//System.out.println(message);




//用户没有登录的情况访问订单页面 给原来的登录页面一个异常  如果原来的订单页面异常则返回不可访问！你没有登录
        if(message==null) {
            if (uri.indexOf("findalluser")>=0||uri.indexOf("success")>=0||uri.indexOf("findallperson")>=0) {
                System.out.println("不可访问");
                request.getRequestDispatcher("/index.jsp").forward(request, response);
                return true;
            }
        }
    return true;

//        request.getRequestDispatcher("/login.jsp").forward(request, response);
//        return false;
       /* User user = (User) request.getSession().getAttribute("USER_SESSION");
        //获取请求的路径
        String uri = request.getRequestURI();
        //如果用户是已登录状态，判断访问的资源是否有权限
        if (user != null) {
            //如果是管理员，放行
            if ("ADMIN".equals(user.getRole())) {
                return true;
            }
            //如果是普通用户
            else if (!"ADMIN".equals(user.getRole())) {
                for (String url : ignoreUrl) {
                    //访问的资源不是管理员权限的资源，放行
                    if (uri.indexOf(url) >= 0) {
                        return true;
                    }
                }
            }
        }

        //对用户登录的相关请求，放行  或者是进入注册界面放行 或者是注册信息提交放行 并终止下面的执行
        if (uri.indexOf("detail") >= 0||uri.indexOf("gst1") >= 0||uri.indexOf("gst") >= 0||uri.indexOf("login") >= 0||uri.indexOf("register")>=0||uri.indexOf("registration")>=0||uri.indexOf("begin")>=0) {
            return true;
        }
        //其他情况都直接跳转到登录页面
        request.setAttribute("msg", "您还没有登录，请先登录！");
        request.getRequestDispatcher("/admin/login.jsp").forward(request, response);
        return false;


        */








    }



}